package com.xyz;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {

    public static void main(String[] args) {
	// write your code here
        // 构造从start到end的序列：
        final int start = 10;
        final int end = 20;
        List<Integer> list = new ArrayList<>();
        for (int i = start; i <= end; i++) {
            list.add(i);
        }

        // 洗牌算法suffle可以随机交换List中的元素位置:
        Collections.shuffle(list);

        // 随机删除List中的一个元素:
        // List 的 remove（int index） 方法, 删除指定索引位置的数据项，并将被删除项返回
        // List 中的索引和 数组 Array 中的一样，都是从0 开始
        int removed = list.remove((int) (Math.random() * list.size()));
        System.out.println("被随机删掉的数是："+removed);
        //int found = findMissingNumber(start, end, list);
        int found = findMissingNumber2(start, end, list);
        System.out.println(list.toString());
        System.out.println("通过函数找到缺少的数是: " + found);
        System.out.println(removed == found ? "测试成功" : "测试失败");
    }

    private static int findMissingNumber2(int start, int end, List<Integer> list) {
        //先对列表进行排序，然后还是用原来的算法即可
        Collections.sort(list);
        for(int i =0;i<10;i++)
        {
            if(list.get(i)!=(i+10))
            {
                return i+10;
            }
        }
        return 20;
    }

    private static int findMissingNumber(int start, int end, List<Integer> list) {
        for(int i =0;i<10;i++)
        {
            if(list.get(i)!=(i+10))
            {
                return i+10;
            }
        }
        return 20;
    }
}
